/**
 * 配置
 * */
package org.zmhhxl.sample3.oauth2.a.configure.feign;

/**
 * feign 请求拦截器
 *
 * @author zmhhxl
 */
//@Slf4j
//public class FeignRequestInterceptor implements RequestInterceptor {
//
////   @Autowired
////   private BearerTokenResolver tokenResolver;
//
//   /**
//    * Called for every request. Add data using methods on the supplied {@link RequestTemplate}.
//    *
//    * @param template
//    */
//   @Override public void apply(RequestTemplate template) {
//
//      Collection<String> fromHeader = template.headers().get(SecurityConstants.REQUEST_SOURCE);
//      // 带from 请求直接跳过
//      if (CollUtil.isNotEmpty(fromHeader) && fromHeader.contains(SecurityConstants.INNER)) {
//         return;
//      }
//
//      // 配置客户端IP
//      template.header("X-Forwarded-For", IpUtils.getIpAddr());
//
//      // 非web 请求直接跳过           RequestContextHolder
//      HttpServletRequest request = ServletUtils.getRequest(); //.get();
//      if(request == null){
//         return;
//      }
//      Enumeration<String> headerNames = request.getHeaderNames();
//      //Map<String, String> headers = ServletUtils.getHeaders(request);
//      log.info("feign请求头headerNames: {} | {}", headerNames, request);
//
//      // 装载web请求所有头部
//      if (headerNames != null) {
//         while (headerNames.hasMoreElements()) {
//            String name = headerNames.nextElement();
//            String values = request.getHeader(name);
//            template.header(name, values);
//
//         }
//      }
//
//      //////////////////////
//      String token = null;
//
//      // 获取当前认证信息
//       Authentication authentication1 = SecurityContextHolder.getContext().getAuthentication();
//      if(authentication1 == null){
//         log.info("feign请求头authentication1:null");
//         return;
//      }
//       Object authentication = authentication1.getPrincipal();
//      if (authentication != null && (authentication instanceof JwtAuthenticationToken)) {
//         token = ((JwtAuthenticationToken)authentication).getToken().getTokenValue();
//         if(StringUtil.isBlank(token)){
//            return;
//         }
//         // 获取jwt解析内容
//         Jwt token1 = ((JwtAuthenticationToken)authentication).getToken();
//         log.info("feign请求头token1:{} | {} | {}", headerNames, token, token1.getClaims());
//
//      }
////      else{
////         // 避免请求参数的 query token 无法传递
////         token = tokenResolver.resolve(request);
////         if (StringUtil.isBlank(token)) {
////            return;
////         }
////         log.info("feign请求头token2:{} | {}", headerNames, token);
////      }
//
//      if (token !=null ) {
//         template.header(
//                 HttpHeaders.AUTHORIZATION,
//                 String.format("%s %s", OAuth2AccessToken.TokenType.BEARER, token)); //"Bearer " + token
//      }else{
//
//      }
//   }
//}
